home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU12.ARC / MSD - $%c623%c2 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.8 KB  |  88 lines

  1. ║CM:MSD - $╞23┬
  2. ║LM21:RM70:PP66:PG60
  3. ║P#120
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $╞23┬           ╙ET LINE 1 (┼╧╔) ON PORT ├ [$02].
  7. $╞23─           ╙ET LINE 0 (─┴╓) ON PORT ├ [$02].
  8. $╞23╞           ╩UMP TO ╔─╠┼ [$┼971].
  9. $╞242  ╘╠╦╔7    ╔F LINE 2 (╔┼┼┼ ┴╘╬) ON PORT ┴ [$00] IS HIGH, AN ┴╘╬ SIGNAL HAS BEEN RECEIVED SO BRANCH TO ╘╠╦╔10 TO HANDLE IT.
  10. $╞245           ╔F LINE 3 (╬─┴├) ON PORT ├ [$02] IS ZERO, WE ARE WAITING FOR THE LISTENER TO ACCEPT THE DATA SO BRANCH TO ╘╠╦╔7.
  11. $╞248           ┼NABLE INTERRUPTS.
  12. $╞249           ╩╙╥ ╟┼╘ [$─410] TO GET THE NEXT DATA BYTE TO BE TRANSMITTED.
  13. $╞24├           ─ISABLE INTERRUPTS.
  14. $╞24─           ╔F BIT 7 OF ╔╧╞╠╟ [$6├] IS SET, THE ╔/╧ CHIPS ARE STILL CONFIGURED FOR ╔┼┼┼ BUS ACTIVITY SO BRANCH TO ╘╠╦╔8.
  15. $╞250           ╩╙╥ ┬╒╙╧╬ [$╞┼11] TO SET PORT ┬ IN ╥┼┴─ MODE.
  16. $╞253  ╘╠╦╔8    ╙ET PORT ┬ [$01] TO $╞╞.
  17. $╞257           ╙ET LINE 0 (─┴╓) ON PORT ├ [$02].
  18. $╞259           ╙ET LINE 1 (┼╧╔) ON PORT ├ [$02].
  19. $╞25┬           ╠OAD .┴ WITH $37.  ╘HIS INSTRUCTION IS NOT NEEDED.
  20. $╞25─  ╘╠╦╔9    ╔F LINE 2 (╔┼┼┼ ┴╘╬) ON PORT ┴ [$00] IS HIGH, AN ┴╘╬ SIGNAL HAS BEEN RECEIVED SO BRANCH TO ╘╠╦╔10 TO HANDLE IT.
  21. $╞260           ╔F LINE 3 (╬─┴├) ON PORT ├ [$02] IS HIGH BRANCH TO ╘╠╦╔9.
  22. $╞263           ╩UMP TO ╘╠╦╔1 TO CONTINUE TALKING.
  23. $╞266  ╘╠╦╔10   ┴N ┴╘╬ SIGNAL HAS BEEN DETECTED SO JUMP TO    ┴╘╬╙╥╔ [$╞0├┴] TO HANDLE IT.
  24.  
  25.        ╬OTE:    ╘HE NEXT CODE SEGMENT IS NEVER EXECUTED.
  26.  
  27. $╞269           ╙ET LINE 0 (─┴╓) ON PORT ├ [$02].
  28. $╞26┬           ╥ETURN.
  29.  
  30.        ╬OTE:    ╘HE NEXT CODE SEGMENT IS NEVER EXECUTED.
  31.  
  32. $╞26├           ╙ET LINE 2 (╬╥╞─) ON PORT ├ [$02].
  33. $╞26┼           ╙ET LINE 1 (SERIAL ┴╘╬ ┴├╦) ON PORT ┴ [$00].
  34. $╞270           ╥ETURN.
  35.  
  36.  
  37.  
  38.        ├╬╘╔╬╘   ─ISK CONTROLLER INITIALIZATION
  39.  
  40. $╞271           ╙ET ═├╥ [$14] TO $30.
  41. $╞275           ╙ET ╔┼╥ [$12] TO $10.
  42. $╞279           ╙ET ╨ORT ┴ [$00] TO $╞─.
  43. $╞27─           ╙ET ╨ORT ┬ [$01] TO $╞╞.
  44. $╞281           ╙ET ├─╥╔╓┼ [$4┼┴8] TO $╞╞.
  45. $╞284           ╙ET ╨ORT ├ [$02] TO $├3.
  46. $╞288           ╙ET ╨ORT ─ [$03] TO $55.
  47. $╞28├           ╙ET ╠┴╘├╚╙ [$┴8] AND ╚─╫╔╠ [$┴000] TO $0┼.
  48. $╞293           ╙ET ╒╠┴# [$1┴] TO $3├ TO GENERATE AN ╔╥╤ INTERRUPT APPROXIMATELY EVERY 15MS.
  49. $╞297           ╙ET ╚┬╔─ [$4┼┴2] TO $08.
  50. $╞29├           ╙ET ─┬╔─ [$4┼┴├] TO $07.║FP0
  51.        ╠├├      ═AIN CONTROLLER LOOP
  52.  
  53. $╞2┴┴           ╙AVE STACK POINTER AT ╙┴╓╙╨ [$4┼┴─].
  54. $╞2┴┼           ╙CAN THE JOB QUEUE ╩╧┬╙ [$4├00-0┬] USING .┘ AS AN INDEX (STARTS AT $00 AND IS INCREMENTED TO $0┬).  ╔F BIT 7 OF A COMMAND BYTE IS SET, BRANCH TO ╠├├1 TO PROCESS IT.
  55. $╞2┬┴           ╩OB QUEUE HAS BEEN SCANNED WITH NO ACTION REQUIRED SO JUMP TO ┼╬─ [$╞76├].
  56. $╞2┬─  ╠├├1     ╙AVE .┘ (JOB QUEUE INDEX) IN ╩╧┬╬ [$4┼┴9].
  57. $╞2├0           ╟ET DRIVE NUMBER FOR THIS JOB BY ┴╬─ING WITH $01.
  58. $╞2├2           ╔F ─RIVE NUMBER IS ZERO, BRANCH TO ╠├├2.
  59. $╞2├4           ╔F ─╒┴╠╞╠ [$┬7] = $01 THEN THIS IS A DUAL DRIVE AND DRIVE 1 EXISTS SO BRANCH TO ╠├├2.
  60. $╞2├8           ╙ET .┴ TO $0╞ (─╥╔╓┼ 1 ╬╧╘ ┴╠╠╧╫┼─) AND JUMP TO ┼╥╥╥ [$╞670].
  61. $╞2├─  ╠├├2     ╙AVE DRIVE NUMBER IN BOTH ─╥╔╓┼ [$┬0] AND      ├─╥╔╓┼ [$4┼┴8].
  62. $╞2─2           ╠OAD .┘ FROM ╩╧┬╬ [$4┼┴9] AND GET THE JOB QUEUE COMMAND FROM ╩╧┬╙,┘ [$4├00,┘].
  63. $╞2─8           ┴╬─ THE COMMAND WITH $78 TO MASK OFF THE DRIVE BITS AND COMMAND INDICATOR FLAG AND SAVE THE RESULT IN ╩╧┬ [$4┼┴┬].
  64. $╞2──           ╠OAD .┴ FROM ╩╧┬╘╥╦,┘ [$4├0├,┘] (THE TRACK FOR THIS COMMAND) AND SAVE IT IN ╩╧┬╘╥╦ [$4┼┴5].
  65. $╞2┼3           ╠OAD .┴ FROM ╩╧┬╙┼├,┘ [$4├18,┘] (THE SECTOR FOR THIS COMMAND) AND SAVE IT IN ╩╧┬╙┼├ [$4┼┴6].
  66. $╞2┼9           ╩╙╥ ╧╬─┼╠ [$╞733] TO TURN ON THE DRIVE MOTOR.
  67. $╞2┼├           ╠OAD .┴ FROM ╩╧┬╬ [$4┼┴9] AND DETERMINE THE ADDRESS OF THE BUFFER BY ADDING $40.  ╙AVE THE RESULT IN ┬╒╞╨╬╘+1 [$43].
  68. $╞2╞4           ╙ET ╧╓╥╨╬╘ [$75/$76] TO $00/$4╞ WHICH POINTS TO THE OVERFLOW BUFFER ($4╞00).
  69. $╞2╞├           ├LEAR THE LOW ORDER PART OF THE BUFFER POINTER ┬╒╞╨╬╘ [$42].
  70. $╞300           ╙ET ╟├╥╞╠╟ [$4┼┬1] TO ZERO.
  71. $╞303           ╠OAD .┴ WITH ╩╧┬╘╥╦ [$4┼┴5] AND IF ZERO, BRANCH TO ╠├├3.
  72. $╞308           ╩╙╥ ═╧╓╚┼─ [$╞693] TO STEP TO THE DESIRED TRACK.
  73. $╞30┬  ╠├├3     ╙ET ------ [$4┼┬3] AND ------ [$4├┼╞] TO $02.
  74. $╞313           ╠OAD .┴ WITH ╩╧┬ [$4┼┴┬].  ┴ USELESS INSTRUCTION SINCE THE VALUE IN .┴ IS CLOBBERED BY THE NEXT SUBROUTINE CALL.
  75. $╞316           ╩╙╥ ╥┼┴─╧╬ [$╞┼1┴] TO SET PORT ┬ IN DISK READ MODE.
  76. $╞319           ╩╙╥ ╙┼┴╦ [$╞321] TO VERIFY POSITION OF ╥/╫ HEAD.
  77. $╞31├           ╔F .├ IS CLEAR (HEAD IN CORRECT POSITION), THEN BRANCH TO ╙┼┼╦40.
  78. $╞31┼           ┼RROR OF SOME SORT SO JUMP TO ├╠┼╬╒╨ [$╞65┼].
  79.  
  80.  
  81.  
  82.        ╙┼┴╦     ╥EAD ANY HEADER ON CURRENT TRACK
  83.  
  84. $╞321           ╙ET ╙┘╬├ MARK COUNTER, ╘═╨ [$4┼┴┼], TO $5┴ (90).
  85. $╞326           ╙ET .╪ TO $06 WHICH COUNTS THE NUMBER OF BYTES TO BE READ AFTER A HEADER IS FOUND.
  86. $╞328           ╙ET HEADER BLOCK IDENTIFIER TO $52 (THE ╟├╥ IMAGE OF ╚┬╔─ = $08).
  87. $╞32─  ╙┼┼╦10   ╩╙╥ ╙┘╬├ [$╞4┴6] TO WAIT FOR A ╙┘╬├ MARK.
  88.